package com.service.impl;

import com.dao.IUserDao;
import com.dao.impl.UserDaoImpl;
import com.pojo.User;
import com.service.IUserService;

public class UserServiceImpl implements IUserService {

    private IUserDao iud = new UserDaoImpl();


    // 用户登录验证
    @Override
    public boolean login(String account, String password) {
        User user = iud.selectUserByAccount(account);
        if (user != null) {
            //user.getPassword()是根据用户输入的账号在库里查询的密码，password是用户输入的密码
            return user.getPassword().equals(password);
        }else{
            return false;
        }
    }



    // 根据账号获取管理员手机号
    @Override
    public String getAdminPhoneByAccount(String account) {
        User user1 = iud.selectUserByAccount(account);
        return user1 != null ? user1.getPhone() : null;
    }

    // 验证管理员姓名和身份证号
    @Override
    public boolean verifyAdminInfo(String account, String idcardName, String idcardNo) {
        return iud.checkAdminInfo(account, idcardName, idcardNo);
    }

    // 更新用户的企业ID和企业名称
    @Override
    public boolean updateUserEnterprise(String account, Integer enterpriseId, String enterpriseName) {
        int i = iud.updateUserEnterprise(account, enterpriseId, enterpriseName);
        return i > 0;
    }
    // 根据账号获取用户信息
    @Override
    public User getUserByAccount(String account) {
        return iud.selectUserByAccount(account);
    }

    // 更新管理员姓名和身份证号
    @Override
    public boolean updateAdminInfo(String account, String idcardName, String idcardNo) {
        // 先进行格式校验
        if (!validateAdminName(idcardName)) {
            return false;
        }
        if (!validateIdCardNo(idcardNo)) {
            return false;
        }
        
        int result = iud.updateAdminInfo(account, idcardName, idcardNo);
        return result > 0;
    }

    // 校验管理员姓名格式（不超过5个汉字）
    @Override
    public boolean validateAdminName(String idcardName) {
        if (idcardName == null || idcardName.trim().isEmpty()) {
            return false;
        }
        
        String name = idcardName.trim();
        // 检查是否只包含汉字且长度不超过5个字符
        return name.matches("^[\u4e00-\u9fa5]{1,5}$");
    }

    // 校验身份证号格式（18位数字，第18位可为X）
    @Override
    public boolean validateIdCardNo(String idcardNo) {
        if (idcardNo == null || idcardNo.trim().isEmpty()) {
            return false;
        }
        
        String idCard = idcardNo.trim().toUpperCase();
        // 检查是否为18位，前17位为数字，第18位为数字或X
        return idCard.matches("^[0-9]{17}[0-9X]$");
    }
}
